数据进入神经网络前需要进行归一化步骤。常用的归一化方法有
注意:归一化与标准化是两个不同的概念。归一化是指将数据缩放到
(1)
其中,
每个元素的值减去样本每个特征的平均值,再除以标准差,最后再进行缩放和平移。
(2)
这里的
(3)
前向传播(Forward Propagation)指神经网络中从输入层到输出层的数据传递过程。在这个过程中,输入数据从输入神经元开始,经过多层神经元的加权求和后经过激活函数生成输出结果。具体步骤如下:
其中,
激活函数
在神经网络中除了线性层外往往还需要加入激活函数,没有激活函数的神经网络只是线性函数,无法拟合曲线,任何一条曲线都能用多条线性函数来逼近,而激活函数使神经网络具有分段的能力,根据万能逼近原理(universal approximation theorrm),3层神经网络可以逼近任意曲线。以下是神经网络中最常见的三个激活函数:
(1)
(2)
(3)
(4)
损失函数
神经网络通过计算预测值与真实值之间的误差,再将误差进行反向传播,从而更新权重。
(1) 常见损失函数:常用的损失函数有
其中,
(2) 交叉熵损失 (Cross-Entropy Loss):
不同的问题交叉熵损失的计算公式也不同,对于二分类问题,交叉熵损失的计算公式如下:
其中,
对于多分类问题,交叉熵损失的计算公式如下:
其中,
交叉熵损失用于分类问题,特别是当输出是概率分布时。它度量了两个概率分布之间的差异,鼓励模型预测与真实标签尽可能接近的概率分布。
循环神经网络(Recurrent Neural Network, RNN)又叫递归神经网络,很简单,相比于普通的全连接神经网络就是把上一次训练的权重与这一次训练的输出值同时输入神经网络。循环神经网络的结构如下:
根据问题的需要,循环神经网络的隐层可以是全连接的,也可以是一对一的。此外,假设每一层级之间的权重是相同的,可降低计算量。循环神经网络的常见变体有长短时记忆神经网络和门控循环单元。
长短时记忆神经网络(long short-term memory neural network, LSTM)是一种主要用于处理时序问题的神经网络结构,由循环神经网络改进而来。相比于传统的循环神经网络,长短时记忆神经网络能够深入挖掘时间序列数据中的固有规律并具有长时记忆功能。
遗忘门:
式中,输入值
记忆门:
式中,输入值
记忆细胞:
记忆细胞代表长期记忆,经过与遗忘门的点乘操作选择性遗忘和与记忆门的元素相加操作选择性记忆得到。
输出门:
输出门选择要输出什么内容,输入值
具体流程:
LSTM的门展开后就是Dense层
LSTM应该记忆什么遗忘什么取决于门的权重,由网络训练得到
门控循环单元(gated recurrent unit, GRU)由长短时记忆神经网络改进而来,门控循环单元与长短时记忆神经网络效果相似,但门控循环单元模型更简洁,
重置与更新门:
隐藏状态
有权重的地方就表明这里有一个
具体流程:
Transformer结构框架图:
输入部分
(1) 词嵌入(
两边的
(2) 位置编码(
词向量偶数位置使用
Encoder部分
整个Transformer可以分为
(1) 自注意力机制(
(2) 多头自注意力机制(
自注意力机制在对当前位置信息进行编码时,会过度的将注意力集中于自身的位置,因此引入多头自注意力机制。多头自注意力机制的步骤如下:
首先,定义
nhead需要能被d_model整除,因为所有头的维度之和等于d_model。即每个注意力头的输出维度是d_model/nhead.
(3) 残差结构与前馈神经网络:
前馈神经网络公式:
激活函数为ReLU。残差结构参考CSDN。
Dncoder部分
(1)
由于transformer在训练时是将数据直接全部输入网络,所以需要使decoder看不到未来的信息。计算很简单,就是加一个mask矩阵
(2)
Encoder的最后一个模块的输出,输入进每个Decoder中,作为Decoder Multi-Head Self-Attention的
(1)
Llama模型仅采用了Transfomer的解码器结构,相比Transfomer的样本和标签数据分别从编码器和解码器输入,
(2)
相比Transform的
(3) 三角函数编码 → 旋转位置编码(RoPE):论文科学空间
以二维词向量为例,将自注意力计算过程中的的
其中,
计算公式改写为以下形式,不展开了:
prompt的理解是另外一个小型的训练样本适时的调整大模型的参数
(1)
BERT模型就是Transformer左边的Encodeer结构,2018年10⽉由Google AI研究院提出,其架构图如下:
(1)
GPT模型,全称为(Generative Pre-trained Transformer),是由OpenAI团队开发的一种基于深度学习的自然语言处理模型。GPT使用Transformer的Decoder作为其架构,但在Decoder的基础上做了一些改动,去掉了Cross-Attention。